domain.c, setup.c:
SMP fix
akw27@boulderdash.cl.cam.ac.uk
kaf24@plym.cl.cam.ac.uk
+kaf24@striker.cl.cam.ac.uk
smh22@boulderdash.cl.cam.ac.uk
init_bh(IMMEDIATE_BH, immediate_bh);
init_apic_mappings(); /* make APICs addressable in our pagetables. */
- sti();
-
#ifndef CONFIG_SMP
APIC_init_uniprocessor();
#else
*/
#endif
+ sti();
+
zap_low_mappings();
kmem_cache_init();
kmem_cache_sizes_init(max_page);
{
int retval;
struct task_struct *p = NULL;
+ unsigned long flags;
retval = -ENOMEM;
p = alloc_task_struct();
p->blk_ring_base = (blk_ring_t *)(p->shared_info + 1);
p->net_ring_base = (net_ring_t *)(p->blk_ring_base + 1);
p->pg_head = p->tot_pages = 0;
- write_lock_irq(&tasklist_lock);
+ write_lock_irqsave(&tasklist_lock, flags);
SET_LINKS(p);
- write_unlock_irq(&tasklist_lock);
+ write_unlock_irqrestore(&tasklist_lock, flags);
newdomain_out:
return(p);